const fastifyPlugin = require('fastify-plugin')

// mongo db
const MongoClient = require('mongodb').MongoClient

async function dbConnector(fastify, options) {
  // 数据库 url
  const url = options.url
  delete options.url

  // 数据库 集合名称
  const db_name = options.db_name
  delete options.db_name

  // 连接数据库
  const client = await MongoClient.connect(url, options)
  // 连接数据库日志
  fastify.log.info('mongodb connect success')

  // 连接数据库集合
  const db = client.db(db_name)

  // 装饰器
  fastify.decorate('database', db)
}
// 用 fastify-plugin 包装插件，以使插件中声明的装饰器、钩子函数及中间件暴露在根作用域里。
module.exports = fastifyPlugin(dbConnector)